Repository navigation
Coding Tracker code review - #296
Kunikazu723 wants to merge 93 commits into
Conversation
Create and use the Configuration package provided by Microsoft to handle configuration properties effectively (I don't really know why I should not use a simple JSON desserializer)
UserInput is a dependency of UserInterface, the latter being public. Allowing access of an internal member in a public member breaks the contract. So it needs to be corrected by either reducing UserInterface's access modifer permission or elevating UserInput's access modifier. The last one being the choice I made
I know I should focus on making atomic commits. But now I'm too burned out for it and for that I am sorry.
The user must input a valid end and start date. So the need of a method that can inform if a start date happened earlier than an end date emerges.
…ngle line for better modularity and debugging
…r not This is a neat way to add the new stopwatch funcitonality since it follows the same pattern as GetStartEndDate manually. This glues them toghether a little bit but it is readable and a nice way to solve it
… inserted a value that already exists in the database
… feedback into what the user is currently inserting
…s in client code allowing for default ISO format to be stored Previously the date stored in the database followed the date format defined in the appsetting.json file. This brought many limitations and akward code, for example: Changing dateFormat in appsettings after the seeded database would make the database store more than one format; TryParseExact already offers an out variable that can be returned directly at UserInput.GetDateTime, no need to make it a string and then parse it as datetime later on. This implementation also takes advantage of System.Data.Sqlite driver that maps DateTime objects directly to ISO standard TEXT types when storing it into the database. Overall this makes the code cleaner and avoid breaking default storage format
Not an atomic commit I know. Unfortunately I fell in this rabbit hole after midnight and I'm kind of burned out. Sorry
…to type select the Order in which the filter should be displayed
System.Data.Sqlite.Core is an older legacy driver. It is advisable and good practice to use the newer Microsof.Data.Sqlite driver
🚀 Project Submitted!Thanks for submitting your project! I will review it soon. 📋 Please check the dashboard to make sure the project is marked as Pending. |
|
@Hacker-735 Project approved! Great work on your Coding Tracker! Your code is well-organized, with good separation of concerns, Dapper integration, input validation, and a clean Spectre.Console interface. 🥋And congratulations! You got your Olive Green belt!! 🫒🫒 Feedback 🔍Your code covers validation well but you could be a bit more granular as in why the validation isn't working. Also when end date fails you're requesting the user to update both the start and end date again. 🔍Well done for adding unit tests! For the next projects consider adding integration tests as well to make sure the operations against the DB work correctly. ☕If you like our roadmap, please consider buying us a coffee. We appreciate your help 🙂 Overall great work!✋🏻Looking forward to seeing your next projects! |
Cool project, learned some nice valuable lessons with this one. (Dapper is pretty neat). Thank you for the guidance